home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / kernel / dev / ds5000.md / dc7085.h < prev    next >
C/C++ Source or Header  |  1992-12-18  |  5KB  |  206 lines

  1. /*
  2.  *  dc7085.h --
  3.  *
  4.  *         Definitions for the dc7085 chip.
  5.  *
  6.  *    Copyright (C) 1989 Digital Equipment Corporation.
  7.  *    Permission to use, copy, modify, and distribute this software and
  8.  *    its documentation for any purpose and without fee is hereby granted,
  9.  *    provided that the above copyright notice appears in all copies.
  10.  *    Digital Equipment Corporation makes no representations about the
  11.  *    suitability of this software for any purpose.  It is provided "as is"
  12.  *    without express or implied warranty.
  13.  *
  14.  * $Header: /cdrom/src/kernel/Cvsroot/kernel/dev/ds5000.md/dc7085.h,v 9.0 89/09/12 15:01:05 douglis Stable $ SPRITE (DECWRL)
  15.  */
  16.  
  17. #ifndef _DC7085
  18. #define _DC7085
  19.  
  20. #include "tty.h"
  21.  
  22. /*
  23.  * Control status register bits.
  24.  */
  25. #define    CSR_TRDY    0x8000
  26. #define CSR_TIE        0x4000
  27. #define    CSR_TX_LINE_NUM    0x0300
  28. #define    CSR_RDONE    0x0080
  29. #define    CSR_RIE        0x0040
  30. #define CSR_MSE        0x0020
  31. #define CSR_CLR        0x0010
  32. #define CSR_MAINT    0x0008
  33.  
  34. /*
  35.  * Receiver buffer register bits.
  36.  */
  37. #define    RBUF_DVAL        0x8000
  38. #define RBUF_OERR        0x4000
  39. #define RBUF_FERR        0x2000
  40. #define RBUF_PERR        0x1000
  41. #define RBUF_LINE_NUM        0x0300
  42. #define RBUF_LINE_NUM_SHIFT    8
  43. #define RBUF_CHAR        0x00FF
  44.  
  45. /*
  46.  * Transmit control register values.
  47.  */
  48. #define TCR_DTR2        0x400
  49.  
  50. /*
  51.  * Line parameter register bits.
  52.  */
  53. #define    LPR_RXENAB    0x1000
  54. #define LPR_B50        0x0000
  55. #define LPR_B75        0x0100
  56. #define LPR_B110    0x0200
  57. #define LPR_B134    0x0300
  58. #define LPR_B150    0x0400
  59. #define LPR_B300    0x0500
  60. #define LPR_B600    0x0600
  61. #define LPR_B1200    0x0700
  62. #define LPR_B1800    0x0800
  63. #define LPR_B2000    0x0900
  64. #define LPR_B2400    0x0A00
  65. #define LPR_B3600    0x0B00
  66. #define    LPR_B4800    0x0C00
  67. #define LPR_B7200    0x0D00
  68. #define LPR_B9600    0x0E00
  69. #define LPR_B19800    0x0F00
  70. #define LPR_OPAR    0x0080
  71. #define LPR_PARENB    0x0040
  72. #define LPR_2_STOP    0x0020
  73. #define LPR_8_BIT_CHAR    0x0018
  74. #define LPR_7_BIT_CHAR    0x0010
  75. #define LPR_6_BIT_CHAR    0x0008
  76. #define LPR_5_BIT_CHAR    0x0000
  77.  
  78. /*
  79.  * The four serial ports.
  80.  */
  81. #define    KBD_PORT    0
  82. #define MOUSE_PORT    1
  83. #define MODEM_PORT    2
  84. #define PRINTER_PORT    3
  85.  
  86. /*
  87.  * Special key values.
  88.  */
  89. #define KEY_SHIFT    0xae
  90. #define KEY_CONTROL    0xaf
  91. #define KEY_UP        0xb3
  92. #define KEY_REPEAT    0xb4
  93. #define KEY_F1        0x56
  94. #define KEY_COMMAND    KEY_F1
  95.  
  96. /*
  97.  * Command characters for the mouse.
  98.  */
  99. #define MOUSE_SELF_TEST        'T'
  100. #define MOUSE_INCREMENTAL    'R'
  101.  
  102. /*
  103.  * Mouse output bits.
  104.  *
  105.  *         MOUSE_START_FRAME    Start of report frame bit.
  106.  *    MOUSE_X_SIGN        Sign bit for X.
  107.  *    MOUSE_Y_SIGN        Sign bit for Y.
  108.  *    MOUSE_X_OFFSET        X offset to start cursor at.
  109.  *    MOUSE_Y_OFFSET        Y offset to start cursor at.
  110.  */
  111. #define MOUSE_START_FRAME    0x80
  112. #define MOUSE_X_SIGN        0x10
  113. #define MOUSE_Y_SIGN        0x08
  114. #define    MOUSE_X_OFFSET        212
  115. #define    MOUSE_Y_OFFSET         34
  116.  
  117. /*
  118.  * Definitions for mouse buttons
  119.  */
  120. #define RIGHT_BUTTON        0x01
  121. #define MIDDLE_BUTTON        0x02
  122. #define LEFT_BUTTON        0x04
  123.  
  124. #define MOTION_BUFFER_SIZE 100
  125.  
  126. /*
  127.  * Mouse report structure definition
  128.  */
  129. typedef struct {
  130.     char state;            /* buttons and sign bits    */
  131.     short dx;            /* delta X since last change    */
  132.     short dy;            /* delta Y since last change    */
  133.     char byteCount;            /* mouse report byte count    */
  134. } MouseReport;
  135.  
  136. /*
  137.  * Lk201/301 keyboard
  138.  */
  139. #define LK_UPDOWN    0x86        /* bits for setting lk201 modes */
  140. #define LK_AUTODOWN    0x82
  141. #define LK_DOWN        0x80
  142. #define LK_DEFAULTS    0xd3        /* reset (some) default settings*/
  143. #define LK_AR_ENABLE    0xe3        /* global auto repeat enable    */
  144. #define LK_CL_ENABLE    0x1b        /* keyclick enable        */
  145. #define LK_KBD_ENABLE    0x8b        /* keyboard enable        */
  146. #define LK_BELL_ENABLE    0x23        /* the bell            */
  147. #define LK_LED_ENABLE    0x13        /* light led            */
  148. #define LK_LED_DISABLE    0x11        /* turn off led            */
  149. #define LK_RING_BELL    0xa7        /* ring keyboard bell        */
  150. #define LED_1        0x81        /* led bits            */
  151. #define LED_2        0x82
  152. #define LED_3        0x84
  153. #define LED_4        0x88
  154. #define LED_ALL        0x8f
  155. #define LK_KDOWN_ERROR    0x3d        /* key down on powerup error    */
  156. #define LK_POWER_ERROR    0x3e        /* keyboard failure on pwrup tst*/
  157. #define LK_OUTPUT_ERROR 0xb5        /* keystrokes lost during inhbt */
  158. #define LK_INPUT_ERROR    0xb6        /* garbage command to keyboard    */
  159. #define LK_LOWEST    0x56        /* lowest significant keycode    */
  160.  
  161. typedef struct {
  162.     char *name;                /* Name to use for device in console
  163.                      * error messages. */
  164.     DevTty *ttyPtr;            /* Information about the logical
  165.                      * terminal associated with the line. */
  166.     int baud;                /* Current baud rate for channel
  167.                      * (9600 means 9600 baud). */
  168.     void (*inputProc)();        /* Procedure to call at interrupt time
  169.                      * to take input character.   See
  170.                      * DevTtyInputChar for example of
  171.                      * inputProc's structure. */
  172.     ClientData inputData;        /* Argument to pass to inputProc. */
  173.     int (*outputProc)();        /* Procedure to call at interrupt time
  174.                      * to get next output character.   See
  175.                      * DevTtyOutputChar for example of
  176.                      * outputProc's calling structure. */
  177.     ClientData outputData;        /* Argument to pass to outputProc. */
  178.     int port;                /* Which of the four ports this is. */
  179.     int flags;                /* See below for definitions. */
  180. } DevDC7085;
  181.  
  182. /*
  183.  * Flag values.
  184.  */
  185. #define XMIT_ENABLED    0x1
  186. #define LINE_ACTIVE    0x2
  187.  
  188. extern DevDC7085    devKeyboard;
  189. extern DevDC7085    devSerialA;
  190. extern DevDC7085    devSerialB;
  191.  
  192. /*
  193.  * Exported procedures:
  194.  */
  195.  
  196. extern void        DevDC7085Reset();
  197. extern void        DevDC7085Activate();
  198. extern int        DevDC7085RawProc();
  199. extern void        DevDC7085MouseInit();
  200. extern void        DevDC7085MousePutCh();
  201. extern int        DevDC7085MouseGetCh();
  202. extern void        DevDC7085KBDPutc();
  203. extern char        DevDC7085TranslateKey();
  204.  
  205. #endif /* _DC7085 */
  206.